home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-01-04 | 14.0 KB | 290 lines | [TEXT/MMCC] |
- //
- // TurboTCP library
- // Copyright © 1993-95, FrostByte Design / Eric Scouten
- //
- // Version history
- //
-
- Current version: 2.1d1
-
-
- Version history:
- --------------
-
- 1.0d1 (7 June 1993)
- * initial release
-
- 1.0d2 (9 June 1993)
- * created CTCPDriver object to handle primary TCP functions (checking for
- MacTCP, fetching local IP address)
- * changed inheritance of CTCPStream from CCollaborator to CObject
- since CCollaborator caused problems disposing a stream, and
- CCollaborator methods were unnecessary
- * fixed bugs in CTCPStream::Dispose and DelayDispose
- * fixed bugs in CTCPAsyncCall::Dispose
- * added minimal support for Telnet protocol to CTelnetDoc
-
- 1.0d3 (11 June 1993)
- * renamed to TurboTCP library
- * major structural change: separated core functions into “TurboTCP base classes”
- and TCL support to "TurboTCP adv classes"
- * removed use of CCollaborator::BroadcastChange() mechanism
- * created new CTCPSessionDoc class to cover typical session behavior
-
- 1.0d4 (16 June 1993)
- * added TCP resolver functions (uses source file “dnr.c” from MacTCP
- Dev Kit, with several mods)
- * added list of TCP streams to CTCPDriver; this allows the driver to
- dispose of all streams that were accidentally not disposed during
- program operation
- * changed “inherited::” method calls to specific class references (BRB)
- * changed class definitions to “class ___ : public ___” notation
- to support TC 6.0 (BRB)
- * added typecasts to support TC 6.0’s stricter typechecking (BRB)
- * changed CTCPStream::Dispose to wait until TCP stream is terminated
- before disposing itself
- * DemoTelnet: implemented dialog box to allow user to choose host
- (CTelnetDoc::NewFile)
-
- 1.0d5 (17 June 1993)
- * updated projects to run under TC 6.0
- * added completion routine for TCPRcv call (CTCPAsyncCall::Dispatch)
- * changed completion/notification routines so that Failures are trapped
- and the call chain continues (CTCPAsyncCall::ProcessCompletion,
- CTCPResolver::ProcessNotify, CTCPStream::ProcessNotify)
- * changed CTCPDriver::ProcessNetEvent to re-issue the Failure which
- occured during the above completion/notification routines
-
- 1.0d6 (18 June 1993)
- * fixed bug in CTCPResolver which allowed the resolver object
- to be disposed while ProcessNotify was still running
-
- 1.0d7 (30 June 1993)
- * renamed source files to “.cp” notation; separated all in-line assembly
- to separate “.asm” files for compatibility with SC++ 6.0
- * moved ProcessNetEvents to TCPAsync.asm (no longer a method
- of CTCPDriver)
- * separated interrupt-level code to end of each source file;
- hooks in place for using Think Profiler
- * fixed incorrect typecasts (byte instead of unsigned short) in
- CTCPStream::NoCopyRcv & CTCPStream::Receive
-
- 1.0d8 (5 July 1993)
- * separated TCPAsync.asm into separate .asm and .cp files for SC++
- compatibility (BRB)
- * fixed bug in CTCPStreamForDoc::SendCString which treated
- strings as Pascal strings
- * fixed bug in CTCPStream::BfrReturn which allowed buffers to
- be returned after the session closed
- * deleted “TurboTCP DNR classes” folder; moved items to
- “base classes” and “doc classes” (renamed) folders
- * filled in CTCPSessionDoc::HandleSendFailed and HandleTerminated;
- both methods now report error messages and ask for responses
- * changed error handling in CTCPStream; all methods now call the
- HandleTCPError, HandleOpenFailed, or HandleSendFailed methods
- instead of FailOSError (except for initialization)
- * changed CTCPSessionDoc to allow window to stay open when the
- session is closed
-
- 1.0d9 (9 July 1993)
- * fixed bug in CTCPStreamForDoc::SendCString which treated C
- strings as Pascal strings; then got inspired to write a routine
- which sends Pascal strings (CTCPStreamForDoc::SendPString)
- * added implementation of Telnet TERMINAL-TYPE protocol
- (albeit only with UNKNOWN terminal)
- * added commands to send the standard Telnet NVT commands
- (Synch, Break, IP, etc.)
- * made the debugging codes a permanent feature
- * implemented Telnet settings dialog box
- * added icons to DemoTelnet application & settings document
- * implemented Telnet EraseChar & EraseLine commands
-
- 1.0d10 (20 July 1993)
- * modified CTCPDriver.cp to reflect the new Apple standard for
- GetMyIPAddr.h type names (i.e., GetAddrParamBlock instead of
- my definition of IPParamBlock) (BRB)
- * added “dnr.h” file with full prototypes for functions in dnr.cp (BRB)
- * removed inherited reference in CTCPSessionDoc::Dispose (BRB)
- * removed HLock calls in CTCPResolver::ITCPResolver and
- CTCPStream::ProcessNotify (BRB)
- * added code to check for Hosts file in system folder (BRB)
- * moved SendBfrCpy, SendChar, SendCString, SendPString from
- CTCPStreamForDoc to CTCPStream; added SendBfrNoCpy
- * modified CTCPAsyncCall::Dispatch so that disposing the data sent
- was optional
-
- 1.0d11 (19 August 1993)
- * added several features to DemoTelnet to support add-on applications
- * DemoTelnet: fixed bug in CTelnetSettingsDLOG which caused
- application to fail continously when Close (Cmd-W) was used
- * DemoTelnet: cursor is now always visible when the terminal is
- no longer the gopher
- * changed CTCPSessionDoc::AutoTitle to incorporate display of filename
- and hostname; also to read strings from STR# resources
- * TCPAsync.asm: several minor optimizations
- * CTCPAsyncCall, CTCPStream: optimized code in several locations,
- avoiding method lookups whenever possible in the ProcessNetEvents sequence
- (especially for TCPNoCopyRcv operations)
- * revised auto-receive configuration to permit multiple TCPNoCopyRcv
- commands to be issued simultaneously, with configurable RDS sizes
- * revised appearance of source files, with better descriptions of some
- function parameters
- * separated DemoTelnet’s TerminalPane into separate library, and released
- it to FTP sites independent of TurboTCP
-
- 1.0b1 (10 September 1993)
- * split CTelnetDoc into CTelnetInterpreter and CTelnetTerminal to support
- Telnet protocol with and without terminal operation; included
- CTelnetInterpreter as part of standard TurboTCP
- * renamed some source files in DemoTelnet
- * added safety check code in CTCPSessionDoc::AutoTitle
- * prevented DemoTelnet from opening wrong file types on open
- * moved the code to create a MacTCP stream from CTCPStream::ITCPStream
- to OpenConnection to improve stability under certain debugging conditions
- * fixed bug in CTCPStream which occurred when a stream was disposed with
- a pending PassiveOpen or ActiveOpen call; previously, the stream would go
- into an endless loop waiting for the call to be completed
- * modified CTCPSessionDoc::HandleClosing to induce a TCPClose call when
- a remote close occurs (even if the goAwayOnClose flag is off)
-
- 1.0b2 (26 September 1993)
- * now ignores “connectionDoesntExist” messages when issuing a TCPClose command
- * wrote near-final documentation
-
- 1.0b3 (11 October 1993)
- * renamed DemoTelnet to MiniTelnet, created separate version history file
- * now ignores “connectionClosing” errors when issuing a TCPClose command
- * also ignores “connectionClosing & connectionDoesntExist” errors when responding
- to completion of TCPNoCopyRcv commands
- * forced TCPStream objects to be locked at all times, preventing ASR notification
- from occurring during memory shuffles
- * removed hard-coded references to data structure sizes
- * corrected documentation for CTCPAsyncCall::Dispose (no longer disposes of next in chain)
- * changed /* comments to //
- * replaced GetNotifLinks (global) with CTCPDriver::GetNotifLink (protected method), which
- reads a single notification link (done to reduce time spent with interrupts disabled)
- * moved global variables (except gTCPDriver) to static class variables of CTCPDriver
- * changed notification links to be a part of CTCPDriver (ProcessNetEvents, etc.);
- improved documentation of this feature
- * fixed bug in CTelnetInterpreter that caused it to read high-ASCII characters (≥0xA0)
- as control characters and hang
- * changed CTCPStream::ITCPStream to use TCL exceptions mechanism
- * CTCPDriver now enforces DNR’s limit of 8 simultaneous calls
- * converted some #define’s to enum’s
-
- 1.0b4 (19 October 1993)
- * slight changes in documentation
- * first public beta release
-
- 1.0b5 (25 October 1993)
- * changed methods in .asm files to non-object procedures; done for compatibility with
- SC++ (sigh)
- * removed static keyword from CTCPStream::NotifyProc definition in source file
- * used macro CLASS for forward definitions of TCL objects in header files
- * removed file "dnr.cp"; incorporated functionality into CTCPResolverCall.cp;
- no longer depends on <AddressXlation.h> or <dnr.h>
- * changed sequence of parameters to CTCPSessionDoc::ITCPSessionDoc to be
- compatible with CDocument::IDocument (printable & rcvBufferSize switched)
- * #ifdef __cplusplus / extern "C" / #endif constructs added for compatibility
- with Symantec C++
- * documentation changed to reflect the typical use of CTCPStream (in the subclass
- CTCPStreamForDoc)
- * changed CTCPStream::itsStream & itsResolver to public fields, rather than protected
-
- 1.0b6 (21 November 1993)
- * allows subclasses of CTCPSessionDoc to set window titles without host or filenames
- by setting both showHostName and showFileName to false (see AutoTitle)
- * moved code to open “Hosts” file from CTCPResolverCall::ITCPResolverCall to OpenResolver
- * restructured completion/notification/disposal lists to use Enqueue/Dequeue mechanism;
- removed all .asm files (yea!)
- * removed CTCPStream::__HandleOpened and __HandleOpenFailed methods
- * restructured link between CTCPStream/CTCPResolverCall and CTCPSessionDoc to use
- the CCollaborator mechanism for message passing; removed CTCPStreamForDoc
- and CTCPResolverForDoc classes
- * corrected CTCPApplication::Exit to also call the CApplication::Exit method
-
- 1.0b7 (17 December 1993)
- * eliminated itsSupervisor field from CTCPStream and CTCPResolverCall; both classes
- now require the dependent objects to set up the dependency (DependUpon (stream))
- * CTCPResolver no longer returns the resolverInUseErr message
- * removed CTCPStream::OwnerDied and CTCPResolver::OwnerDied; those using
- receive bypass procedures must now call CTCPStream::InstallRcvBypassProc(nil)
- before disposing of the dependent object
- * adjusted CTCPSessionDoc to reflect above changes
- * receive bypass procedure target type changed from CDirectorOwner to CObject
- * CTCPStream::Send, SendBfrCpy, SendBfrNoCpy now ignore attempts to send 0 bytes
- * replaced CTCPApplication::Exit with ::Quit method, so that event handlers would still be valid;
- added new dialog box describing delay in quitting
- * added CTCPStream::BroadcastSafeChange method to allow objects to dispose themselves
- * changed CTCPAsyncCall::DispatchNoCopyRcv to issue _asynchronous_ BfrReturn call
- * created precompiled headers, cleaned up header dependencies
- * improved documentation in headers; each class definition is now proceeded by a definition
- of the class’ purpose and relationships to other classes in the library
-
- 1.0 final (10 January 1994)
- * minor documentation changes, no source code changes
-
- 1.0.1 (19 January 1994)
- * corrected minor bug in CTCPResolverCall::OpenResolver
- * recompiled MiniTelnet without a certain silly line in Failure() which gauranteed a
- MacsBug crash anytime a minor error occurred
-
- 2.0d1 (26 May 1994)
- * ported to TCL 2.0 (including CodeWarrior TCL port)
- * added new CTCPProtocolInterp mix-in class containing most of the
- functionality previously in CTCPSessionDoc
- * modified CTCPStream and CTCPResolverCall to work with CTCPProtocolInterp only
- * made CTCPSessionDoc a subclass of both CDocument and CTCPProtocolInterp
- * removed CheckedCast, replaced with TCL_DYNAMIC_CAST
- * redesigned access control, extensive use of C++ friends
- * removed receive-bypass procedures
- * buggy pre-release version
-
- 2.0b1 (30 May 1994)
- * fixed problems with UPPs in Metrowerks’ <TCPPB.h> header
- * removed UPP code from 68K versions (conditional compilations)
- * modified CTCPAsyncCall::CompletionProc to eliminate reference to class structure or
- application globals
- * first stable version under Metrowerks compilers
-
- 2.0b2 (2 June 1994)
- * parts of new documentation written
- * fixed problems with CTCPResolverCall callbacks in Symantec C++ (added extern "C")
- * fixed problem with CTCPAsyncCall::CompletionProc in Symantec C++
- (use an ugly hack to get at the parameter in A0, instead of looking for it on the stack)
- * first stable version under Symantec C++ compiler
-
- 2.0b3 (11 July 1994)
- * new documentation completed
- * added UTurboTCP utility class; made CTCPDriver a private, internal class
- * changed CTCPApplication to use new interfaces to UTurboTCP
- * fixed bug in CTCPSessionDoc::RemoteClose() and CTelnetTerminal::RemoteClose(): both
- methods forgot to call the inherited RemoteClose() method
- * modem-friendly: removed CheckTCPDriver() and CheckResolver() calls from
- CTCPDriver constructor
- * renamed CTCPProtocolInterp to CTCPEndpoint (to match OpenTransport terminology)
- * moved SendChar, SendCString, SendPString to CTCPEndpoint
- * added stream output operators (operator <<) to CTCPEndpoint
- * added maximum # TCP events and maximum tick count to net event loop
- (see UTurboTCP::ProcessNetEvents())
- * silenced invalidRDS error for TCPRcvBfrReturn call (occurs frequently with VAX hosts
- when canceling operations, etc.)
-
- 2.0b4 (11 October 1994)
- * fixed problem with CTCPStream passing notifications to CTCPEndpoint after
- endpoint object disposed
- * added new project files for Metrowerks CodeWarrior CW/4.5
-
- 2.0 final (21 November 1994)
- * fixed problem with disposing of connections when receiving data that could result in the
- MacTCP stream being disposed twice
- * adapted for compatibility with old and new Universal Headers (especially <MacTCP.h>)
-
- 2.0.1 (22 November 1994)
- * fixed compile-time error with old Universal Headers
-
- 2.1d1 (__ January 1995)
- * divorced core classes from TCL dependencies
- * changed commenting style for ObjectMaster
- * introduced new headers TurboTCP.buildflags.h and TurboTCP.types.h
- * improved handling of older Apple header files